Durable Objects
もうGAしてるんだよなmiyamonz.icon
https://developers.cloudflare.com/workers/learning/using-durable-objects/
2つの機能
グローバルな一意性
idによって一意であることを保証
データセンターにルーティングされる
トランザクションストレージAPI
durable object内にある、強整合のkey value storage
storageであり、永続化されます!
2つの機能(特徴)はどっちも大事だが
まず一意性
一意性があるからこそ、強整合に保存ができるストレージが持てる
と考えるといいのではmiyamonz.icon
Durable objects自体は、bindingでworkerと結びつけて、envから触る感じ
データセンタ上の別worker的な認識を持っておくと良さそう
やり取りはfetch apiでやる
https://developers.cloudflare.com/workers/learning/using-durable-objects/#instantiating-and-communicating-with-a-durable-object
データ
storageは強整合なkey value storage
それとは別にクラスなので、インスタンス変数上をephemeralなストアとしても使える
ただ単に、JSとして、クラスのメンバ変数としてオブジェクトをもつというだけ
接続がなくなったら自動で消える
durationのGB-sに課金されるはず
https://developers.cloudflare.com/workers/platform/pricing/#durable-objects
400,000 GB-s, + $12.50/million GB-s
静的ストレージの料金比較#642a5ea4385a920000b78fbf
これは他のストレージと比較すると当然高い
チャットスペースなど、一時的なものを入れておくだけにしよう
言い換えると、DOのinstanceを無限に生きながらえさせて、ずっとクソデカ変数を保持するのはやめよう
そんなことわざわざする人はいないとおもうが
Workersプラットフォームに低レイテンシーの調整と一貫したストレージを提供します。
https://blog.cloudflare.com/durable-objects-open-beta/
https://blog.cloudflare.com/introducing-workers-durable-objects/
例
Real-time collaborative document editing
atomic counter
chat
Shopping cart
game server
iot coordination
social feeds
https://developers.cloudflare.com/workers/learning/using-durable-objects/#object-location
Currently, Durable Objects do not migrate between locations after initial creation. Cloudflare will be exploring automatic migration compatibility in the future.